<?php 
/**   
   Modelos de Estatus -- pertenece a modelo de entrega
   @author Natanael  
*/ 

class encompany extends Model{
	
	  private $_nameTable = "EN_company ";
	  
	  public function __construct()
	  {
	  	   parent::Model(); 
		   $this->load->database();  	   
	  }
	  
	  public function loadDataComapnyEntrega($referencia = false,$fecha = false,$balance = false, $fechaF = false, $arrayContacto = false, $start = false, $offset = false, $sortname = false, $sortorder = false) {

	  	   
	  	    //
	  	    
	  	    if ($arrayContacto != false)
	  	        $this->db->or_where_in('Id_Referencia',$arrayContacto);
	  	        
	  	    if ($referencia != false)
	  	        $this->db->like('Referencia', $referencia); 
	  	    
	  	    if ($fecha != false)
	  	       $this->db->where('Fecha_Inicio_Entrega >', $fecha);
	  	       
	  	    if ($fechaF != false)
	  	       $this->db->where('Fecha_Inicio_Entrega <', $fechaF);   
	  	       
	  	    if ($balance != false){
	  	    	if ($balance == 1) {
	  	    		  $this->db->where('Balance_Pendiente !=', 0);
	  	    	}else{
	  	    		 $this->db->where('Balance_Pendiente', 0);
	  	    	}
	  	    	
	  	    }
	  	     
		    if($offset != false)
				$this->db->limit($offset, $start);
           
            if($sortname != false && $sortorder != false) {
				$result = $this->db->order_by($sortname, $sortorder);
			}	
	  	
	  	  $result = $this->db->get_where($this->_nameTable,array('status'=>0));
	  	  return $this->getModeloArrayFromQueryResult($result);
	  	
	  }
	  
	 /**
	  * 
	  * 
	  * @param unknown_type $referencia
	  * @param unknown_type $contacto
	  * @param unknown_type $balance
	  */
     public function loadCompanyParaExcel($referencia = false,  $contacto = false, $balance = false) 
     {

     	    if ($contacto != false)
	  	        $this->db->or_where_in('Id_Referencia',$contacto);
	  	        
	  	    if ($referencia != false)
	  	        $this->db->like('Referencia', $referencia); 
	  	       
	  	    if ($balance != false){
	  	    	if ($balance == 1) {
	  	    		  $this->db->where('Balance_Pendiente !=', 0);
	  	    	}else{
	  	    		 $this->db->where('Balance_Pendiente', 0);
	  	    	}
	  	    	
	  	    }
	  	     
	  	  $result = $this->db->get_where($this->_nameTable, array('status'=>0));
	  	  return $this->getModeloArrayFromQueryResult($result);
	  	
	  }
	  
	  
	  
	  
	  /**
	   * 
	   * Enter description here ...
	   * @param unknown_type $start
	   * @param unknown_type $offset
	   * @param unknown_type $sortname
	   * @param unknown_type $sortorder
	   * @param unknown_type $estatus
	   * 
	   * @author Paberli Jimenez
	   */
	  public function loadCompany($start = false, $offset = false, $sortname = false, $sortorder = false, $estatus = 0, $where = false)
	  {
	  	 
	   if($where != false){
		  	
		  	 $this->db->where($where);
		}  
	  	
           
          if($sortname != false && $sortorder != false)
				$this->db->order_by($sortname, $sortorder);
				
		if($offset != false)
				$this->db->limit($offset, $start);
		
		  
				$this->db->where('status', $estatus);
		  
		 
		   
	  	  return $this->getModeloArrayFromQueryResult($this->db->get($this->_nameTable));
	  	  

	  }
	  
      public function numRegistro()
	  {
	  	
	  	  $result = $this->db->get_where($this->_nameTable, array('status'=>0));
	  	  return $result->num_rows();
	  }
	  
	  public function getCantidad($where = false, $estatus = 0)
	  {
	  	
	  	$this->db->where($where);
        $this->db->where('status', $estatus);
        $result = $this->db->get($this->_nameTable);
	  	return $result->num_rows();
	  	
	  }
	  public function getModeloArrayFromQueryResult($result)
	  {
		
	   	if ($result->num_rows() == 0)
			return false;
		
	       $modeloUbicacionArr = array(); 
	         foreach ($result->result() as $record) 
		      {
			    $modeloUbicacionArr[] = new M_CompanyEntrega($record);
		      }
		
		return $modeloUbicacionArr;
       }
    
	  public function crearNuevoEstatus($data)
	  {
	  	  if ($this->db->insert($this->_nameTable, $data)){
	  	  	  return $this->retornId();
	  	  }
		      return false;
	  }
	  
	  public function updateCEntrega($data,$where){
	  	 if ($this->db->update($this->_nameTable,$data,$where)) {
	  	 	
	  	 	return true;
	  	 
	  	 }
	  	 
	  	  return false;
	  }
	  
	  public function upDateEstatus($data,$where)
	  {  
	  	    if ($this->db->update($this->_nameTable,$data,$where)) {
	  		   return true;
	  	    }
	           return false;
	  }
	  
	  public function delEstatus($where)
	  {
	  	   if ($this->db->delete($this->_nameTable,$where)){
	  	   	
	  		   return true;
	  		   
	  	    }
	           return false;
	  	
	  }
	  
	  public function loadCompaniasWhere($where = false, $estatus = 0)
	  {      
	  	    if($where != false){
	  	    	
	  	    	$this->db->where($where);
	  	    }
	  	 	
	  	 	
	  	 
	  	 		
	  	 	$this->db->where('status', $estatus);	  	 
         	$result = $this->db->get($this->_nameTable);
         	return $this->getModeloArrayFromQueryResult($result);
	  }
	  
	  public function loadCompanyEntradaId($id_ubicacion)
	  {
	  	    $qresult = $this->db->get_where($this->_nameTable, array('Id_Referencia' => $id_ubicacion));

			if ($qresult->num_rows() == 0)
				return false;
	
			return new M_CompanyEntrega($qresult->row());
	  }
	  
	  private function retornId()
	  {
	  	$result = $this->db->get($this->_nameTable);
		$result = $this->getModeloArrayFromQueryResult($result);
		foreach ($result as $k)
		{
			$id = $k->getIdReferencia();
		}	
		
		return $id;
	  }
	  
	  public function delete($id)
	  {   
	  	  $this->db->update($this->_nameTable,array('status'=>1),array("Id_Referencia"=>$id));
           
	  }
	  
    public function CalcularDias($fechapar,$fechaact)
	{

		$fechapar = substr($fechapar,0,10);
		
		$fechaact = substr($fechaact,0,10);
		
		$fechapar_arr=explode('-',$fechapar);
		
	
		$fechapar_mk=mktime(0,0,0,$fechapar_arr[1],$fechapar_arr[2],$fechapar_arr[0]);
		$fechapar_mk=intval($fechapar_mk);

		$fechaact_arr=explode('-',$fechaact);
		$fechaact_mk=mktime(0,0,0,$fechaact_arr[1],$fechaact_arr[2],$fechaact_arr[0]);
		$fechaact_mk=intval($fechaact_mk);

		$segundos_diferencia =$fechaact_mk-$fechapar_mk;
		$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
		return  $dias_diferencia;

	}
}

class M_CompanyEntrega{
	
	  private $_IdReferencia;
	  private $_IdUbicacion;
	  private $_IdUsuarioEntrega;
	  private $_NOOrden;
	  private $_Referencia;
	  private $_BalancePendiente;
	  private $_FechaInicioEntrega;
	  private $_IdTipoProducto;
	  private $_cProductos;
	  private $_moneda;
	  
	  
	  public function __construct($objeto)
	  {
	  	 $this->setIdReferencia($objeto->Id_Referencia);
	  	 $this->setIdUbicacion($objeto->Id_Ubicacion);
	  	 $this->setIdUsuarioEntrega($objeto->Id_UsuarioEntrega);
	  	 $this->setNOOrden($objeto->NO_Orden);
	  	 $this->setReferencia($objeto->Referencia);
	  	 $this->setBalancePendiente($objeto->Balance_Pendiente);
	  	 $this->setFechaInicioEntrega($objeto->Fecha_Inicio_Entrega);
	  	 $this->setIdTipoProducto($objeto->Id_Tipo_Producto);
	  	 $this->setClasificacionP($objeto->clasificacion_servicios);
	  	 $this->setMoneda($objeto->moneda);
	  }
	  
      public function getIdReferencia()
      {
      	 return $this->_IdReferencia;
      }

      public function setIdReferencia($value)
      {
      	 $this->_IdReferencia = $value; 
      }
      
      public function getIdUbicacion()
      {
      	return $this->_IdUbicacion;
      }
      
      public function setIdUbicacion($value)
      {
      	 $this->_IdUbicacion = $value;
      }
      
      public function getIdUsuarioEntrega()
      {
      	  return $this->_IdUsuarioEntrega;
      }
      
      public function setIdUsuarioEntrega($value)
      {
      	  $this->_IdUsuarioEntrega = $value;
      }
      
      public function getNOOrden()
      {
      	 return $this->_NOOrden;
      }
      
      public function setNOOrden($value)
      {
      	 $this->_NOOrden = $value;
      }
      
      public function getReferencia()
      {
      	 return $this->Referencia;
      }
      
      public function setReferencia($value)
      {
      	 $this->Referencia = $value;
      }
      
      public function getBalancePendiente()
      {
         return $this->_BalancePendiente;
      }
      
      public function setBalancePendiente($value)
      {
      	  $this->_BalancePendiente = $value;
      }
      
      public function getFechaInicioEntrega()
      {
      	return $this->_FechaInicioEntrega;
      }
      
      public function setFechaInicioEntrega($value)
      {
      	$this->_FechaInicioEntrega = $value;
      }
      
      public function getIdTipoProducto()
      {
      	 return $this->_IdTipoProducto;
      }
      
      public function setIdTipoProducto($value)
      {
      	 $this->_IdTipoProducto = $value;
      }
      
      public function setMoneda($ojt)
      {
      	  $this->_moneda = $ojt;
      }
      
      public function getMoneda()
      {
      	 return $this->_moneda;
      }
      
      public function setClasificacionP($value)
      {
      	  $this->_cProductos = $value;
      }
      
      public function getClasificacionP()
      {
      	   return $this->_cProductos;
      }
	
}
?>